package com.swing.swingShouTime;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;

//创建一个自定义的窗口类
//鼠标点击事件，显示当前时间
public class MyFrame extends JFrame {

    JLabel timeLabel = new JLabel("00:00:00");
    JButton button = new JButton("显示时间");

    public MyFrame(String message) {
        super(message);


        //内容面板
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new FlowLayout());

        //像内容面板里添加控件，如JLabel, JButton
        contentPane.add(timeLabel);
        contentPane.add(button);

        //创建监听器对象
        MyButtionListener listener = new MyButtionListener();

        //使用匿名内部类简化写法，或者使用Lambda表达式也可以
        //把监听器注册到按钮
//        button.addActionListener(new ActionListener(){
//
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                //当鼠标点击时，swing框架会调用监听器的actionPerformed()方法
//                //System.out.println("按钮被点击.....");
//                //内部类调用外部类的方法，若无名字冲突，前缀一般可省略
//                MyFrame.this.showTime();
//            }
//        });

        //简化写法Lambda表达式
        button.addActionListener(e -> {
            MyFrame.this.showTime();
        });


    }

    /**
     * 语法分析
     * 1.ActionListener是一个接口，所有派生时用implements
     * 2.addActionListener(...)传入的参数
     */

    //监听器对象ActionListener
    private class MyButtionListener implements ActionListener{


        //谁调用了这个方法？swing框架自动调用的
        @Override
        public void actionPerformed(ActionEvent e) {
            //当鼠标点击时，swing框架会调用监听器的actionPerformed()方法
            //System.out.println("按钮被点击.....");
            //内部类调用外部类的方法，若无名字冲突，前缀一般可省略
            MyFrame.this.showTime();
        }
    }




    public void showTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
        String format = simpleDateFormat.format(new Date());
        //想给JLabel标签设置文本，需要使用setText标签
        timeLabel.setText(format);
    }




    //监听器
    /**
     * 监听器Listener,是swing里界面事件处理的一种方式。
     * (1).创建监听器对象
     * (2).将监听器对象交给按钮
     * (3).当按钮被点击时，Swing框架会调用监听器对象里面的方法，进行处理。
     */



}
